package com.demo.service.api;

import com.demo.controller.MyFallbackFactory;
import com.demo.entity.Employee;
import com.demo.util.ResultEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

// @FeignClient 表示当前接口和一个Provider对应
// 注解中value属性，指定跟Provider的微服务名称对应
// 注解中fallbackFactory属性，指定Provider不可用时提供备用方案的工厂对象
@FeignClient(value = "demo-provider",fallbackFactory = MyFallbackFactory.class)
public interface EmployeeRemoteService {
    // Feign starter里面包含了spring-web.jar
    // 注意使用Feign的时候，接口和实现的微服务工程里面的实现类一定要完全一致
    // 无论是参数，还是注解，所有的都要一模一样，不能省略
    @RequestMapping("/provider/get/employee/remote")
    public Employee getEmployeeRemote();

    // 这里一定要写@RequestParam("keyword")，不能只写@RequestParam，不然会报参数找不到的错
    @RequestMapping("/provider/circuit/get/employee")
    public ResultEntity<Employee> getEmp(@RequestParam("keyword") String keyword);
}
